Microcomputers are data processing devices which include a central processing unit (CPU), memory and some input/output (I/O) or other functions on a single piece, or chip, of semiconductor material. In many cases, such a microcomputer will include an external bus interface to provide communication with memory, I/O and other peripheral devices which are not located on the chip.
The timing requirements of integrated circuit data processors with external buses have long conflicted with the varying abilities of memory and other peripheral devices to respond to bus signals. Designers of computing systems have been forced to include circuits external to the data processor to modify, usually by "stretching" or inserting "wait states" into, the normal timing of a processor's buses in order to accommodate the abilities of the slower peripheral devices in their systems.
Most systems which include microcomputers also require off-chip logic to decode some of the upper address signals in order to trigger the enable, or select, inputs of the various peripheral devices. Bus stretching, chip select and any other required external functions are generally referred to as "glue logic". A possible design goal of a new microcomputer is to reduce required glue logic to as great an extent as possible.
However, integrating glue logic functions onto a microcomputer chip is not necessarily a trivial process. Retaining the flexibility which must be present in a microcomputer in order that it reach a sufficiently wide market requires that difficult trade-offs be made between competing customer needs. Integrating chip select and bus stretching logic onto a microcomputer requires careful consideration of trade-offs between, for example, reducing glue logic and reducing overall microcomputer performance.